/*

    tools23d - tools for converting images to 3D formats.
    Copyright (C) 2014  Dave Gorst

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.

*/

#ifndef BTIME23D_H_INCLUDED
#define BTIME23D_H_INCLUDED

typedef struct
{
	unsigned int repetitions;	/**< Number of times output frames will be repeated. */
	int frame_offset;			
	float sine;
	float time_stretch;			/**< How much the output will be stretched timewise compared to the original. */
	BOOL preserve_aspect_ratio;	/**< Boolean indicating whether we will preserve the aspect ratio of input frames. */
	BOOL wraparound;
	Directions direction;
	Filters filter;
	Mode mode;
	LogLevel loglevel;
	AutoCropTypes croptype;
	SortType sorttype;

	unsigned int width;		/**< Desired output width. */
	unsigned int height;	/**< Desired output height. */
	unsigned char depth;	/**< Desired output bit depth. */

	unsigned int number_of_input_filenames;	/**< Number of input filenames. */
	char ** input_filenames;	/**< Pointer to list of input filename strings. */
	char * output_filename;	/**< Pointer to output filename string. */

	BOOL always_yes;	/**< Always respond "yes" to any question rather than seek user input. */
} params;

/* Return number of args read.
   Will use SetError mechanism to check for failures.
 */

typedef t3d_return (*option_function ) (
    char,
    params *,
    int *,
    int,
    char **);

typedef struct
{
	option_function func;
	char * long_option;
	char * help_text;
} option;

t3d_return T3D_Run (params *);

#endif
